In [5]:
edges = set([(1,2), (2,3), (2,4), (2,5), (4,5), (4,6), (5,6), (4,7)])
In [21]:
def get_vecinos(nodo):
vecinos = set() #Se crea un conjunto vacio para vecinos
for f,t in edges:
if f == nodo:
vecinos.add(t)
if t == nodo:
vecinos.add(f)
return vecinos
vecinos = get_vecinos(2)
N = len(vecinos)
posibles_links_entre_vecinos = N*(N-1)/2
posibles_links_entre_vecinos
Out[21]:
In [24]:
nodos = set()
for f,t in edges:
nodos.add(f)
nodos.add(t)
nodos
Out[24]:
In [26]:
vecinos
(1,2) in edges
Out[26]:
In [34]:
#Numero de enlaces reales entre los vecinos
def get_links_vecinos(vecinos):
enlaces_vecinos = 0
for v in vecinos:
for i in vecinos:
if (v,i) in edges:
enlaces_vecinos = enlaces_vecinos+1
return enlaces_vecinos
In [38]:
# obtener coeficiente de clustering
def get_clustering_coeficient(nodo):
numero_vecinos = get_vecinos(nodo)
enlaces_entre_vecinos = get_links_vecinos(numero_vecinos)
if len(numero_vecinos) == 1:
ci = 0
else:
ci = (2*enlaces_entre_vecinos)/(len(numero_vecinos)*(len(numero_vecinos)-1))
return ci
get_clustering_coeficient(2)
Out[38]:
In [42]:
# Obtener coeficiente de clustering para todos los nodos
for j in nodos:
coeficiente = get_clustering_coeficient(j)
print("para el nodo: "+ str(j) + " El coeficiente de clustering es: " + str(coeficiente))
(a, b) = 0.3 (a, c) = 1.0 (a, d) = 0.9 (a, e) = 1.0 (a, f) = 0.4 (c, f) = 0.2 (b, h) = 0.2 (f, j) = 0.8 (f, g) = 0.9 (j, g) = 0.6 (g, k) = 0.4 (g, h) = 0.2 (k, h) = 1.0
In [65]:
import matplotlib
%matplotlib inline
import networkx as nx
#edges = set([('a','b'), ('a','c'), ('a','d'), ('a','e'), ('a','f'), ('c','f'), ('b','h'), ('f','j'), ('f','g'), ('j','g'), ('g','k'), ('g','h'), ('k','h')])
G = nx.Graph()
G.add_weighted_edges_from([('a','b',0.3),('a','c',1),('a','d',0.9),('a','e',1),('a','f',0.4),('c','f',0.2),('c','f',0.2),('b','h',0.2),('f','j',0.8),('f','g',0.9),('j','g',0.6),('g','k',0.4),('g','h',0.2),('k','h',1)])
nx.draw_networkx(G)
In [66]:
G.size(weight='weight')
Out[66]:
Imprima la matriz de adyasencia
In [67]:
A = nx.adjacency_matrix(G)
print(A.todense())
Con la misma red anterior asuma que un link debil es inferior a 0.5, cree un código que calcule si se cumple la propiedad "strong triadic closure"
In [ ]:
Cambie un peso de los links anteriores para que se deje de cumplir la propiedad y calcule si es cierto. Explique.
In [ ]:
Escriba un código que detecte puntes locales y que calcule el span de cada puente local
In [ ]:
In [ ]:
Grafique la distribución del promedio de grados en cada una de las redes generadas del ejercicio anterior
In [ ]:
Haga lo mismo para redes con 100 nodos
In [ ]:
In [ ]:
In [ ]:
Grafique cuál es el porcentaje de nodos del componente más grande para diferentes valores de p
In [ ]:
Identifique para que valores de p el componente mas grande esta totalmente interconectado
In [ ]: